Classes
- PierPane
- PierListPane
- PierStackPane
- PierScrollable
- PierLayerPane

Pier Application
- PierApp
- PierWindow (Free floating)
- PierApp

-------------------------------------------------------------------
ToDo
- Correct display of dummy PierPane
  - Work from top down, adding calls and implementations
- Display of PierWork
- Continue filling in class specifications
- All specifications implemented
- Probably ought to test this stuff too!

-------------------------------------------------------------------
PierPane 
- A Pane is a basic installable unit for a dock.  This is what the
  user installs, moves around, etc.  It is a replicant, so it can 
  be dragged to any BShelf.  It can be dragged to any Pane displayer
  which will arrange it in order.
- Inherits from BView.
Public:
- PierPane()
  - Normal constructor or
  - Construct from archive
- Archive()
  - Construct archive: archive subviews (?), add local data members.
  - Override BView (call inherited)
  - Add data members
* AboutRequested()
  - Display dialog box with information about pane.
  - New hook function (modeled on BApplication version).
  - Should be overridden.
  - Default version displays "What a pane!" alert.
x Configure()
  - Displays a non-modal dialog box to configure the pane.
  - Suggested name for such a function.
- Draw()
  - Draws pane.
  - Overrides BView version.
  - Should be overridden.
  - Default version draws title box with centered titled and second 
    box below that.
? DrawBorder(bool raised, BRect)
? DrawTitleBar()
  - Draws titlebar for pane.
? GetMinimumSize()
  - Returns minimum size.  Minimum width should be standard pane
    width.  Preferred height should be barheight size.
  - New hook function.
  - May be overridden.
  - Default returns PANE_WIDTH and barHeight.
? GetPreferredSize()
  - Returns preferred (maximum) size.  Preferred width should be 
    standard pane width + desired tab size.  Preferred height should
    be minimum size to fully display itself.
  - Overrides BView.
  - Should be overridden.
  - Default returns the barHeight.
- Instantiate()
  - Creates a PierPane object from an archive.
  - Static function.
- MessageReceived()
  - Dispatches AboutRequested and WorkspaceActivated messages to 
    corresponding virtual functions.
  - Overrides BView version.
  - May be overidden.  If so, derived version should call this 
    PierPane version as default case.
? ResizeToMinimum()
  - Resizes pane to minimum size.  
  - New hook function, similar to ResizeToPreferred.
  - May be overridden.  Overriding function may or may not call
    default version.  (If subclass overrides and does not call
    inherited version, then it should duplicate action of inherited
    function.)
  - Default just calls GetPreferredSize() and then calls ResizeTo().
* WorkspaceActivated()
  - React to workspace activated (usually via dispatched message).
  - New hook function (modeled on BApplication version).
  - May be overridden.
  - Default does nothing.
Protected:
* barHeight
  - Height of titlebar, minimal height of pane.
  - New data variable.
  - May be modified by subclasses.
Private:  

-------------------------------------------------------------------
PierPaneSet
- Defines a set of functions for objects which hold copies of panes.
  A paneset takes responsibility for the panes it is given.   
- Does not inherit.
Public:
* AddPane()
  - Adds a pane to the list.
  - Similar to AddChild() in BView.
* RemovePane()
  - Removes specified pane from list.
  - Similar to RemoveChild() in BView.
* ResizeLimits(BPoint mouseDown)
  - Returns a BRect specifying the limits by which a subpane may resize
* PaneResized(PierPane* pane, float dwidth, float dheight)
  - Called by a contained pane to notify that it has been resized
  - May also be called by AddPane() and/or RemovePane() to report 
    increased size of subpanes.  
  - NOTE: pane = NULL when called by RemovePane()!
  - dwidth should always be 0.0 (for now).
Protected:
* panes 
  - A BList of pointers to panes.  
Private:
  

-------------------------------------------------------------------
PierScrollable
- Provides a scrollable view to show panes in.  Panes are stacked 
  vertically in view.  Scrollable is responsible for positioning 
  panes in view. 
- Follows left/right and top/bottom of parent.
- Inherits from PierPaneSet.  (Or maybe has the same interface, but
  does NOT inherit.  (Since it should never be used as a PierPaneSet.
Public:
- AddPane()
  - Adds a pane to the list.  Sets size of added pane. Moves panes 
    as necessary.
  - Overrides PierPaneSet.
- RemovePane()
  - Removes specified pane from list.  Moves panes as necessary.
  - Overrides PierPaneSet.
- Draw()
  - Draws lines between panes and any free areas.
Protected:
Private:
- panes 
  - A BList of pointers to panes.  

-------------------------------------------------------------------
PierStackPane
- Inherits from PierPane, (PierPaneSet).
Public:
Protected:
Private:

-------------------------------------------------------------------
PierListPane
- A pane with items in a list.  (This is closer to regular docks.)
  Items in list will have a name, an icon (small and large) a menu
  and an open action (message).
- Inherits from PierPane.
Public:
Protected:
Private:

-------------------------------------------------------------------
PierListItem
Public:
Protected:
Private:

-------------------------------------------------------------------
PierWindowBar
- Draws a bar to be used at the top of a PierWindow.  Also gives
  access to menu for window/application.
- It would probably be simplest to implement this as a BMenuBar,
  but that might be insufficient (may want zoom box too).
- Inherits from BView.
Public:
- CTor() 
- Draw()
  - Draws box w name
Protected:
Private:

-------------------------------------------------------------------
PierWindow
- Inherits from BWindow
- Created not zoomable and not resizable - let contain pane control
  sizing (may change this later, but this is simplest for now).
- AppMenu ("Pier" or icon)
  About Pier...
  Preferences (gap: size(zero,small,medium,custom), custom gap, top/bottom)
  Left Pier (with check mark)
  Right Pier (with check mark)
  Window List
  Quit
- Left or Right
  Add Pane... (Submenu of add-ons)
Public:

Protected:
Private:

-------------------------------------------------------------------
PierAnchored
- General window class for pier application.  Draws a (title)bar
  at the top for accessing options, then follows that with a single
  pane.
- Anchor location and size constants are defined.
- Inherits from PierWindow.
Public:
Protected:
Private:

===================================================================
DrawBorder(BView* view, bool raised, BRect rect)
- draws a 3d border along the specified BRect.
- Border is raised by default
- BRect is view->Bounds() by default
- Note: Changes highcolor



